package main

import "fmt"

func min(a, b int) int {
	if a > b {
		return b
	}
	return a
}

func minSubArrayLen(target int, nums []int) int {
	i, n := 0, len(nums)
	targetCur, subArrayLenMin := 0, n+1
	for j := 0; j < n; j++ {
		targetCur += nums[j]
		for targetCur >= target && i <= j {
			subArrayLenMin = min(subArrayLenMin, j-i+1)
			targetCur -= nums[i]
			i++
		}
	}
	if subArrayLenMin == n+1 {
		return 0
	}
	return subArrayLenMin
}
func main() {
	fmt.Println(minSubArrayLen(7, []int{2, 3, 1, 2, 4, 3}))
}
